#用函数打印斐波拉契数列

def fib1(max_num):
	n,a,b=0,0,1;
	while n<max_num:
		print(b);
		a, b = b, a + b#注意赋值语句
		n=n+1
	return 'done'

#我自己写的，最好理解的，其实也是多用了一个变量c
def fib3(max_num):
	a,b,n=0,1,0;
	c=1;#c代表本次计算结果，也就是前两项之和
	while n<max_num:
		print(c);
		c=a+b;
		a=b;
		b=c;
		n=n+1;	

#仔细观察，可以看出，fib函数实际上是定义了斐波拉契数列的推算规则，
#可以从第一个元素开始，推算出后续任意的元素，这种逻辑其实非常类似generator。
#要把fib函数变成generator，只需要把print(b)改为yield b就可以了：
#如果一个函数定义中包含yield关键字，那么这个函数就不再是一个普通函数，而是一个generator：
def fib4(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b#注意，只改了这一行
        a, b = b, a + b
        n = n + 1
    return 'done'

g=fib4(10);#调用该generator时，会生成一个generator对象    
print('是个generator对象:',g);
for v in g:
	print(v,end=',');